package com.ruoyi.bluebera.conf;


import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.JSONArray;
import com.alibaba.fastjson2.JSONObject;
import com.ruoyi.common.core.redis.RedisCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import java.io.File;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;

/**
 * 负责加载 conf/chains.json 到 Redis
 */
@Component
public class ChainConfigLoader {

    @Autowired
    private RedisCache redisCache;

    /** Redis 存储 key */
    private static final String REDIS_KEY = "dapp:chains";

    /** 本地 JSON 文件路径 */
    private static final String CONFIG_PATH = "conf/chains.json";

    /**
     * 项目启动时自动加载
     */
    @PostConstruct
    public void init() {
        loadChainsToRedis();
    }

    /**
     * 从 conf/chains.json 读取并写入 Redis
     */
    public void loadChainsToRedis() {
        try {
            File file = new File(CONFIG_PATH);
            if (!file.exists()) {
                System.err.println("chains.json 配置文件不存在: " + file.getAbsolutePath());
                return;
            }

            String jsonText = new String(Files.readAllBytes(file.toPath()), StandardCharsets.UTF_8);

            // fastjson 解析
            JSONObject jsonObject = JSON.parseObject(jsonText);
            JSONArray chainsArray = jsonObject.getJSONArray("chains");

            if (chainsArray == null || chainsArray.isEmpty()) {
                System.err.println("chains.json 格式错误，未找到 chains 数组");
                return;
            }

            // 存入 Redis
            redisCache.setCacheObject(REDIS_KEY, chainsArray);

            System.out.println("✅ 成功加载 chains.json 并写入 Redis，key = " + REDIS_KEY);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 提供一个读取 Redis 的方法
     */
    public JSONArray getChainsFromRedis() {
        return redisCache.getCacheObject(REDIS_KEY);
    }
}

